package com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks;

import com.alibaba.fastjson.annotation.JSONField;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.db_sync.DbSyncSchedule;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.db_sync.SubTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;

@Data
@ApiModel(value = "数据库同步服务")
public class DbSync {

    /**
     * 服务id，界面输入，同一服务前后置需一样
     * */
    @ApiModelProperty(value = "服务id，界面输入，同一服务前后置需一样")
    private Integer id;
    /**
     * 服务名称
     * */
    @ApiModelProperty(value = "服务名称,不能为空")
    private String name;
    /**
     * 描述
     * */
    @ApiModelProperty(value = "服务描述,选填")
    private String descr;
    /**
     * 同步方向，t2nt表示从前置到后置，nt2t表示从后置到前置
     * */
    @ApiModelProperty(value = "同步方向，t2nt表示从前置到后置，nt2t表示从后置到前置")
    private String direction;
    /**
     * 同步方式 1触发器 2普通全表 4触发器单表同步
     * */
    @ApiModelProperty(value = "同步方式， 1触发器 2普通全表 4触发器单表同步")
    private String syncType;
    /**
     * 服务状态，stop停止，run表示运行中
     * */
    @ApiModelProperty(value = "服务状态，stop停止，run表示运行中")
    private String state;

    /**
     * 定时计划
     * */
    @Valid
    private DbSyncSchedule schedule;

    /**
     * 是否使用数据库连接池
     * */
    @ApiModelProperty(value = "是否使用数据库连接池，不能为空，可选值true/false")
    private Boolean enableDBPool = true;

    /**
     * 是否一对多
     * */
    @ApiModelProperty(value = "是否一对多，可选择true/false")
    private boolean multiTaskType;

    /**
     * 源端数据资源
     * */
//    @NotEmpty(message = "数据资源不能为空")
    @ApiModelProperty(value = "源端数据资源，不能为空")
    private String databaseSourceName = "";

    @ApiModelProperty(value = "通道配置名称，不能为空")
    private String channel;

//    @ApiModelProperty(value = "是否选择所有数据表")
//    private boolean selectAll;

    /**
     * 子任务，每个表一个任务
     * 因为里面的参数和最终的SubTask的参数是一样的，
     * 因此，直接使用老的SubTask类就好了，不再定义
     * */
    @JSONField(name = "subtask")
    @Valid
    @NotEmpty(message = "子任务不能为空")
    private List<SubTask> subTask;

}
